#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include <SceneGraph/customable.h>
#include <string>
using namespace PhysLeo;
namespace py = pybind11;

class PyCustomable : public Customable
{
public:
    using Customable::Customable;

    void initCustomResource() override
    {
        PYBIND11_OVERLOAD_PURE(void, Customable, initCustomResource, );
    }

    void customOperation() override
    {
        PYBIND11_OVERLOAD_PURE(void, Customable, customOperation, );
    }
};

void initCustomable(py::module &mod)
{
    using class_type = Customable;
    using helper_type = PyCustomable;
    auto pyclass_name = std::string("Customable");
    py::class_<class_type, helper_type, std::shared_ptr<class_type>>cls(mod, pyclass_name.c_str());

    cls.def(py::init<>());
    cls.def("initCustomResource", &class_type::initCustomResource);
    cls.def("customOperation", &class_type::customOperation);
}
